Motion matching is a scheme to investigate an image flow between two pictures, and in the case of digital video compression, it takes advantage of temporal redundancy of digital video data and constitutes a valuable portion of digital video encoding algorithm. Since motion matching algorithms compare raw data against reference data and searches for the best matching location, its performance generally depends on the size of the search area (“motion search range” or “MSR”) and a more robust performance will require a larger motion search range. However, a larger motion search range typically leads to a higher amount of computation and requires larger memory size as well as larger memory transfer bandwidth. This implementation cost overhead will generally increase significantly as picture resolution increases, from QSIF to SIF/QVGA to VGA/D1 to HD. This presents serious technical challenges to efficiently implement motion search algorithms, particularly for cost and power sensitive consumer applications.
For example, referring to FIG. 1, in the processing of two frames of data, for example for motion estimation in video applications, a current frame 104 is compared against a reference frame 102, where each frame may be divided into a number of macroblocks (“MB”). Each MB of the current frame would be compared against each MB of the reference frame 102. In the most general sense, the first MB 106 of the current frame 104 would be compared against the reference frame 102 at all pixel locations. This process would require a significant amount of computational power as well as a large amount of memory throughput.
In a better prior art technology method in the processing of the data frames, referring to FIG. 2, a MB 202 would be selected from the current frame 104 and its corresponding MSR is designated as 206 of the reference frame 102. MB 202 is then compared and matched against MSR at all data points within MSR, and the best matching point based on a pre-determined cost function will be identified. For the purpose of this disclosure, the details of the cost function are irrelevant and the determination of such function is outside the scope of this disclosure. In comparing the current frame against the reference frame, the MBs are processed in a left to right, top to down sweeping order as designated on 104. Therefore, in such processing as for motion estimation, prior to processing of a new MB, its corresponding MSR is designated and the pixel data inside such MSR needs to be prepared. Such processing would require the loading and reloading of these neighboring MBs of the block 206 every time a row of data is processed. The reloading of the MBs requires memory bandwidth which is a relatively power-consuming subprocess when compared to other processes and is a bottleneck in the processing of the data frames.
Therefore, it is desirable to have novel methods in the processing of two data frames where a first data frame is processed against a second data frame in applications such as motion estimation and other relevant applications.